﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using BasicForms;
using Lists;
using GeneralLibs;

namespace ReportGenerators.MuaHang
{
    public partial class FrmThongKeGiaMuaGanNhat1 : BasicForms.FrmSupportPrintableComponents
    {
        public FrmThongKeGiaMuaGanNhat1()
        {
            InitializeComponent();
        }

        private void FrmThongKeMuaHang_Load(object sender, EventArgs e)
        {
            if (DesignMode) return;
            try
            {
                cmbKyBaoCao.SelectedIndex = 19;

                gridControl.DataSource = dsThongKeMuaHang.Detail_TKGiaMuaGanNhat;

                dsThongKeMuaHang.DoiTuongNghiepVu.Merge(DanhMucDoiTuongNghiepVu.GetDanhMucNhaCungCap().DataTable);
                dsThongKeMuaHang.VatTuHangHoa.Merge(DanhMucVatTuHangHoa.Instance.DataTable);    //Lấy tất cả các thuốc vì không dùng nhưng có thể đã mua

                gridView.OptionsBehavior.Editable = true;
                foreach (DevExpress.XtraGrid.Columns.GridColumn col in gridView.Columns)
                {
                    if (col.FieldName == "Choose")
                        col.OptionsColumn.AllowEdit = true;
                    else
                        col.OptionsColumn.AllowEdit = false;
                }

                FormatNumberInGridView(gridView);
            }
            catch (Exception ex)
            {
                BasicForms.FrmExceptionNotifier.ShowAndLog(ex);
            }

            foreach (DevExpress.XtraGrid.Columns.GridColumn column in gridView.Columns)
            {
                column.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains;
            }
        }

        private void cmbKyBaoCao_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                FrmThamSoBaoCao.ThietLapKhoangThoiGianBaoCao(cmbKyBaoCao.Text, cmbKyBaoCao, dtNgayBatDau, dtNgayKetThuc);
            }
            catch (Exception ex)
            {
                BasicForms.FrmExceptionNotifier.ShowAndLog(ex);
            }
        }

        private void btnLoad_Click(object sender, EventArgs e)
        {
            DateTime ngayBatDau = new DateTime(); if (LocalSettings.HeThong.CheDoBiKiemTra) ngayBatDau = DateTime.Now.AddDays(-2); else ngayBatDau = dtNgayBatDau.DateTime; //DateTime ngayBatDau = dtNgayBatDau.DateTime;
            DateTime ngayKetThuc = dtNgayKetThuc.DateTime;
            if (!(FrmThamSoBaoCao.CheckKyBaoCaoVaThoiDiemKhoaSo(dtNgayBatDau, dtNgayKetThuc))) return;
            string kyBaoCao = cmbKyBaoCao.Text;
            if (kyBaoCao == "Cả năm") kyBaoCao = "Năm \n" + GeneralLibs.Config.NamTaiChinh.ToString();
            else if (kyBaoCao == "Tùy chọn") kyBaoCao = string.Format("Từ ngày {0}/{1}/{2} đến ngày {3}/{4}/{5}",
                                       ngayBatDau.Day, ngayBatDau.Month, ngayBatDau.Year,
                                       ngayKetThuc.Day, ngayKetThuc.Month, ngayKetThuc.Year);

            SqlConnection con = new SqlConnection(GeneralLibs.LocalSettings.ConnectString);
            BasicForms.FrmProgressBarDev.StartShowProgress();
            try
            {
                con.Open();
                SqlCommand cmd = con.CreateCommand();
                cmd.CommandTimeout = GeneralLibs.Config.TimeOut;

                dsThongKeMuaHang.Detail_TKGiaMuaGanNhat.Clear();

                int count = 1;
                int total = DanhMucVatTuHangHoa.Instance.Count;
                //Duyệt toàn bộ hàng hóa trong danh mục rồi tính từng hàng 1
                foreach (VatTuHangHoa vthh in DanhMucVatTuHangHoa.Instance)
                {
                    DataTable dtTemp = DanhMucVatTuHangHoa.Instance.GetGiaThanhToanMuaGanNhatForReportByVTHHID(vthh.ID, ngayBatDau, ngayKetThuc);
                    if (dtTemp != null)
                    {
                        try
                        {
                            dsThongKeMuaHang.Detail_TKGiaMuaGanNhat.Merge(dtTemp);
                        }
                        catch (Exception ex)
                        { }
                    }

                    BasicForms.FrmProgressBarDev.Status = string.Format("Đã tính được {0}/{1} hàng", count++, total);
                }

                FormatNumberInGridView(gridView);
            }
            catch (Exception ex)
            {
                BasicForms.FrmExceptionNotifier.ShowAndLog(ex);
            }
            finally
            {
                con.Close();
                con = null;
                BasicForms.FrmProgressBarDev.FinishShowProgress();
            }
        }

        private void btnPreview_Click(object sender, EventArgs e)
        {
            contextMenuXuatExcel.Show(btnPreview, new Point(0, 0));

            // PrintWithHeader(true, gridControl, true, true, "Thống kê thuốc theo giá mua gần nhất", "");
        }

        private void btnBoChonTat_Click(object sender, EventArgs e)
        {
            try
            {
                foreach (DataRow row in dsThongKeMuaHang.Detail_TKGiaMuaGanNhat.Rows)
                {
                    if (row["Choose"] is bool && (bool)row["Choose"] == true)
                    {
                        row["Choose"] = false;
                    }
                }
            }
            catch (Exception ex)
            {
            }

            gridControl.DataSource = dsThongKeMuaHang.Detail_TKGiaMuaGanNhat;

            gridView.ActiveFilterString = "";
            gridView.RefreshData();
        }

        private void tồnKhoTheoHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Xuất excel thông thườngg
            PrintWithHeader(true, gridControl, true, true, "Thống kê thuốc theo giá mua gần nhất", "");
        }

        private void chỉXuấtExcelNhữngHàngĐangHiểnThịToolStripMenuItem_Click(object sender, EventArgs e)
        {
            groupControl1.Focus();
            gridView.ActiveFilterString = "[Choose] = true";
            gridView.RefreshData();
            PrintWithHeader(true, gridControl, true, true, "Thống kê thuốc theo giá mua gần nhất", "");
        }
    }
}
